const { exec } = require('child_process');
const fs = require('fs');
const { resolve } = require('path');
const path = require('path');
const { stringify } = require('querystring');

//定义正则表达式，分别匹配<style></style>和<script></script>标签
// \s\S 表示空白符和非空白符


const regStyle = /<style>[\s\S]*<\/style>/;

const regScript = /<script>[\s\S]*<\/script>/;

// 读取文件
fs.readFile(path.join(__dirname, '../素材/index.html'), 'utf8', (err, dateStr) => {
    if (err) {
        return console.log('读取失败' + err.message);
    }
    // 读取文件成功后，调用对应的三个方法resolveCss,resolveStyle,resolveScript
    // exec()方法用于检索字符串中的正则表达式的匹配 返回一个数组,索引为0的元素存放结果，未匹配则返回值为null
    // RegExpObject.exec(string)
    resolveCSS(dateStr);
    resolveJS(dateStr);
    resolveHTML(dateStr);


});
// 定义处理css样式的方法
function resolveCSS(htmlstr) {
    // 使用正则提取需要的内容
    const r1 = regStyle.exec(htmlstr);
    // 将提取出来的得样式字符串，进行字符串的replace替换操作
    const newCSS = r1[0].replace('<style>', '').replace('</style>', '');
    //调用fs.writeFile()方法，将提取的样式，写入到clock目录中index.css的文件中
    fs.writeFile(path.join(__dirname, './colck/index.css'), newCSS, err => {
        if (err) {
            return console.log('写入文件失败' + err.message);
        }
    })

    function resolveJS(htmlstr) {
        // 使用正则提取需要的内容
        const r2 = regScript.exec(htmlstr);
        // 将提取出来的得样式字符串，进行字符串的replace替换操作
        const newJS = r2[0].replace('<scrip>', '').replace('</script>', '');
        //调用fs.writeFile()方法，将提取的样式，写入到clock目录中index.css的文件中
        fs.writeFile(path.join(__dirname, './colck/index.js'), newJS, err => {
            if (err) {
                return console.log('写入文件失败' + err.message);
            }
        })
    }

    function resolveHTML(htmlstr) {
        const newHTML = htmlstr.replace('regStyle', '<link rel="stylesheet" herf="./index.css">').replace('regScript', '<script src="./index.js"></script>');
        //调用fs.writeFile()方法，将提取的样式，写入到clock目录中index.css的文件中
        fs.writeFile(path.join(__dirname, './colck/index.html'), newHTML, err => {
            if (err) {
                return console.log('写入文件失败' + err.message);
            }
        })
    }

}

